An operating system is a software program which regulates the use of resources associated with a computing system. The system resources managed typically include the central processing unit, memory, and input and output devices associated therewith. The operating system is typically a number of custom written low level routines. These routines are embedded deep within the system code and are therefore not generally available to user.
As a result, the operating system must be designed for a number of predetermined typical applications which are believed to be close to some norm. Unfortunately, the standardized design forces performance compromises which may not be optimal for an individual user or application.
Some operating systems such as UNIX have a number of parameters that can be varied to change the operational characteristics of the entire computer system or sub-system. Some of these parameter's values are fixed at the boot time, while others can be varied while the system is running. The analysis and tuning of these parameters to produce near optimum operation of a computer for a particular application running on a specific hardware configuration is very time consuming and requires a `hit and miss` approach or manual tuning by a very skilled system expert. Currently, certain attempts are made to control a few of these parameters dynamically, but the control method typically consists of thresholding which frequently produces far less than near optimal results.
Hence, there is a need in the art for a system or technique for providing a more sophisticated dynamic and static tuning of operating system parameters that will allow the operating system to run at a near optimum state to perform a given task in a given application and hardware environment.